.\"	$OpenBSD: fold.1,v 1.19 2016/10/24 13:46:58 schwarze Exp $
.\"	$NetBSD: fold.1,v 1.5 1995/09/01 01:42:42 jtc Exp $
.\"
.\" Copyright (c) 1980, 1993
.\"	The Regents of the University of California.  All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\"    notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\"    notice, this list of conditions and the following disclaimer in the
.\"    documentation and/or other materials provided with the distribution.
.\" 3. Neither the name of the University nor the names of its contributors
.\"    may be used to endorse or promote products derived from this software
.\"    without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\"	@(#)fold.1	8.1 (Berkeley) 6/6/93
.\"
.Dd $Mdocdate: October 24 2016 $
.Dt FOLD 1
.Os
.Sh NAME
.Nm fold
.Nd fold long lines for finite width output device
.Sh SYNOPSIS
.Nm fold
.Op Fl bs
.Op Fl w Ar width
.Op Ar
.Sh DESCRIPTION
.Nm
is a filter which folds the contents of the specified files,
or the standard input if no files are specified,
breaking the lines to have a maximum of 80 display columns.
.Pp
The options are as follows:
.Bl -tag -width 8n
.It Fl b
Count
.Ar width
in bytes rather than column positions.
.It Fl s
If an output line would be broken after a non-blank character but
contains at least one blank character, break the line earlier,
after the last blank character.
This is useful to avoid line breaks in the middle of words, if
possible.
.It Fl w Ar width
Specifies a line width to use instead of the default of 80.
.El
.Pp
Unless
.Fl b
is specified, a backspace character decrements the column position
by one, a carriage return resets the column position to zero, and
a tab advances the column position to the next multiple of eight.
.Sh ENVIRONMENT
.Bl -tag -width 8n
.It Ev LC_CTYPE
The character encoding
.Xr locale 1 .
It decides which byte sequences form characters
and what their display width is.
If unset or set to
.Qq C ,
.Qq POSIX ,
or an unsupported value, each byte except backspace, tab, newline,
and carriage return is treated as a character of display width 1.
.El
.Sh EXIT STATUS
.Ex -std fold
.Sh SEE ALSO
.Xr expand 1 ,
.Xr fmt 1
.Sh STANDARDS
The
.Nm
utility is compliant with the
.St -p1003.1-2008
specification.
.Sh HISTORY
The
.Nm
utility first appeared in
.Bx 1 .
It was rewritten for
.Bx 4.3 Reno
to improve speed and modernize style.
The
.Fl b
and
.Fl s
options were added to
.Nx 1.0
for
.St -p1003.2
compliance.
.Sh AUTHORS
.An -nosplit
.An Bill Joy
wrote the original version of
.Nm
on June 28, 1977.
.An Kevin Ruddy
rewrote the command in 1990, and
.An J. T. Conklin
added the missing options in 1993.
.Sh BUGS
Traditional
.Xr roff 7
output semantics, implemented both by GNU nroff and by
.Xr mandoc 1 ,
only uses a single backspace for backing up the previous character,
even for double-width characters.
The
.Nm
backspace semantics required by POSIX mishandles such backspace-encoded
sequences, breaking lines early.
The
.Xr fmt 1
utility provides similar functionality and does not suffer from that
problem, but isn't standardized by POSIX.
